//
// Created by wangliewei on 2021/8/16.
//
/*前缀和的逆运算，比如前缀和里面的s数组成为a数组的前缀和，
那么a数组就可以称为s数组的差分
原题的操作是针对前缀和数组，现在改为在差分数组上操作，可以
把时间复杂度总O(N)降到O(1)，最后在求个和即可
所以关键在于搞明白在前缀和数组上的操作如何等价于在差分数组上
的操作
*/
#include<iostream>
using namespace std;

const int N = 1e5 + 10;
int a[N],b[N];

void insert(int l, int r, int c){
    b[l] += c;
    b[r + 1] -= c;
}

int main(){

    int n, m;
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= n; i++) scanf("%d", &a[i]);

    for (int i = 1; i<=n; i++){
        insert(i, i, a[i]);
    }

    while (m--) {
        int l, r, c;
        scanf("%d%d%d", &l, &r, &c);
        insert(l, r, c);
    }

    //把b[]变成他自己的前缀和
    for (int i = 1 - 1; i <= n; i++){
        b[i] = b[i-1] + b[i];
    }

    for (int i = 1; i <= n; i++){
        printf("%d ", b[i]);
    }


    return 0;
}















